package com.xiongwei.builder;

/**
 * 指挥者：用于创建一个复杂的对象。
 * 1.隔离了客户与对象的生产过程
 * 2.负责控制产品对象的生成过程。
 *
 * 持有建造者对象，用构造者来创建产品对象
 * @author XiongWei
 * @date 2024/1/18
 */
public class HouseDirector {

    private HouseBuilder houseBuilder;

    public HouseDirector(HouseBuilder houseBuilder) {
        this.houseBuilder = houseBuilder;
    }

    public House constructHouse() {
        houseBuilder.buildBasic();
        houseBuilder.buildWall();
        houseBuilder.buildRoof();
        return houseBuilder.buildHouse();
    }


}
